
package controlador;


import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import modelo.CategoriaDAO;
import modelo.Cliente;
import modelo.ClienteDAO;
import modelo.DetalleProducto;
import modelo.Ingrediente;
import modelo.IngredienteDAO;
import modelo.Producto;
import modelo.ProductoDAO;


import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import modelo.*;

import vista.VentanaConsultaProducto;
import vista.VentanaIngredienteModeloTabla;
import vista.VentanaOrden;
import vista.VentanaTablaOrdenProducto;


public class ControladorVentanaOrden implements ActionListener {

	private VentanaOrden ventanaOrden;

	private CategoriaDAO categoriaDAO = new CategoriaDAO();
	private ProductoDAO productoDAO = new ProductoDAO();
    private OrdenDAO ordenDAO = new OrdenDAO();
    private DetalleOrdenDAO detOrdenDAO = new DetalleOrdenDAO();
    private DetalleOrden detOrden = new DetalleOrden();
    float valor = 0;
    float valortotal = 0;

	public ControladorVentanaOrden() {
		super();
		ventanaOrden = new VentanaOrden();
		ventanaOrden.setLocationRelativeTo(null);
		ventanaOrden.setVisible(true);
		ventanaOrden.addListener(this);
		
		List<String> milista= new ArrayList<String>();
		milista=categoriaDAO.consultarCategoriasNombre();
		ventanaOrden.setcargarComboCategoria(milista);
		List<String> milistaproductos= new ArrayList<String>();
		milistaproductos= productoDAO.consultarProductosNombre();
		ventanaOrden.setcargarComboProducto(milistaproductos);
		ventanaOrden.setJtxtcodcategoria(categoriaDAO.buscarCategoria(ventanaOrden.getJcmbCategoriaOrden()));
		ventanaOrden.setcargarComboProducto(milistaproductos); 
		//ventanaOrden.setcargarComboProducto(productoDAO.buscarProductosCategoria(ventanaOrden.getJtxtcodcategoria())); 
		//ventanaOrden.setJtxtCodProductoOrden(productoDAO.buscarCodProducto(ventanaOrden.getJcmbProductoOrden())); 
	}

	
	public void actionPerformed(ActionEvent e) {
		String  actionCommand  = e.getActionCommand();
		if  (actionCommand.equals("Registrar")) {
			RegistrarCliente();
		}
		else if(e.getActionCommand().equals("Procesar")){
			ProcesarOrden();
	    }
		else if(actionCommand.equals("Cancelar"))
			ventanaOrden.borrarDatos();
		else if(actionCommand.equals("Salir"))
			ventanaOrden  = new VentanaOrden();
		
	    else if(!(ventanaOrden.getJcmbCategoriaOrden().equals(AWTEvent.MOUSE_EVENT_MASK))){
			ventanaOrden.setJtxtcodcategoria(categoriaDAO.buscarCategoria(ventanaOrden.getJcmbCategoriaOrden()));
			ventanaOrden.setcargarComboProducto(productoDAO.buscarProductosCategoria(ventanaOrden.getJtxtcodcategoria()));
		}
		else if(!(ventanaOrden.getJcmbCategoriaOrden().equals(AWTEvent.MOUSE_EVENT_MASK))){
		    	ventanaOrden.setJtxtCodProductoOrden(productoDAO.buscarCodProducto(ventanaOrden.getJcmbProductoOrden()));
		}
	    else {
				BuscarCliente(ventanaOrden.getCedulaCli());
	    }

		if  (actionCommand.equals("Cargar Productos ")){
			ProductoDAO productoDAO = new ProductoDAO();
		    List<Producto> productos = productoDAO.consultarProductos();
		    this.ventanaOrden.IngresarProductos(new VentanaTablaOrdenProducto(productos));
		    for(int i = 0; i < ventanaOrden.getjTableOrdenProducto().getRowCount(); i++){
		         valor =  Float.parseFloat(ventanaOrden.getjTableOrdenProducto().getValueAt(i,2).toString());
		         valortotal = valortotal + valor;
		    }
		    String nuevovalor =String.valueOf(valortotal);
		    ventanaOrden.setJtxtTotalPagar(nuevovalor);
		}
		
		
	}

	public void RegistrarCliente() {
		try
		{
			if( ventanaOrden.getCedulaCli().equals("")|| 
				ventanaOrden.getNombre().equals("")||
				ventanaOrden.getApellido().equals("")||
				ventanaOrden.getDireccion().equals("")||
				ventanaOrden.getTelefono().equals(""))

				
				ventanaOrden.mostrarMensaje("Debe llenar todos los campos");
			else
			{
				ClienteDAO clienteDAO = new ClienteDAO();
				String cedula =  ventanaOrden.getCedulaCli();
				String nombre =  ventanaOrden.getNombre();
				String apellido = ventanaOrden.getApellido();
				String direccion = ventanaOrden.getDireccion();
				String telefono =  ventanaOrden.getTelefono();
				Cliente cliente = new Cliente(cedula,nombre,apellido,direccion,telefono);
				clienteDAO.registrarCliente(cliente);
				ventanaOrden.mostrarMensaje("El cliente se ha registrado exitosamente");
				ventanaOrden.CamposNoEditables();
			}
		}
		catch(Exception e)
		{
			ventanaOrden.mostrarMensaje("El Cliente No se pudo registrar, verifique que los datos sean correctos");
			ventanaOrden.borrarDatos();
		}

	}

	public void ProcesarOrden(){
		try
		{
		
			if( ventanaOrden.getCodProductoOrden().equals("")|| 
					ventanaOrden.getCodOrden().equals("")||
					ventanaOrden.getApellido().equals("")||
					ventanaOrden.getCedulaCli().equals("")||
					ventanaOrden.getTotalPagar().equals("")||
					ventanaOrden.getFechaOrden().equals("")||
					ventanaOrden.getTelefono().equals("")){
				
				ventanaOrden.mostrarMensaje("Debe llenar todos los campos");
				}
			else
			if(ventanaOrden.getTotalPagar().equals(""))
				ventanaOrden.mostrarMensaje("Debe ingresar por lo menos un producto a la orden");
			else	
			{
				productoDAO = new ProductoDAO();
				String codOrden =  ventanaOrden.getCodOrden();
				String cedulaCli =  ventanaOrden.getCedulaCli();
				String fechaOrden =  ventanaOrden.getFechaOrden();
				float totalPagar = Float.parseFloat(ventanaOrden.getTotalPagar());
				Orden orden = new Orden(codOrden,cedulaCli,fechaOrden,totalPagar);
				ordenDAO.registrarOrden(orden);
				
				DetalleOrden detOrden;
				for(int i = 0; i < ventanaOrden.getjTableOrdenProducto().getRowCount(); i++)
				{
					String codProducto = ventanaOrden.getjTableOrdenProducto().getValueAt(i,0).toString();
					String descProd = ventanaOrden.getjTableOrdenProducto().getValueAt(i,1).toString();
					float precio = Float.parseFloat(ventanaOrden.getjTableOrdenProducto().getValueAt(i,2).toString());
					int cant =  Integer.parseInt(ventanaOrden.getjTableOrdenProducto().getValueAt(i,3).toString());
					ordenDAO = new OrdenDAO();
					detOrden = new DetalleOrden(codOrden,codProducto,descProd,cant,precio);
					detOrdenDAO.registrarDetalleOrden(detOrden);
				}
				ventanaOrden.borrarDatos();
				ventanaOrden.mostrarMensaje("La Orden se ha procesado exitosamente");
				
			}
		}
		catch(Exception e)
		{
			ventanaOrden.mostrarMensaje("La Orden No se pudo procesar, verifique que los datos sean correctos");
			ventanaOrden.borrarDatos();
		}
	}
	
	
	public void BuscarCliente(String cedulaBuscada){
	
		
		Vector <Cliente> cliente = new Vector <Cliente>();

		int i = 0; 
		boolean encontrado = false; 
		if (cliente.size() > 0){ 
			while(!encontrado && i < cliente.size())
			{ 
			   if (cliente.elementAt(i).getCedulaCli().compareTo(cedulaBuscada) == 0) 
				  
				   encontrado = true; 
				 
			   i++; 
			} 
			if (encontrado == false) 
				System.out.println("Registre al Cliente"); 
		}
	  
	}   
	
}
 
	

